package com.mlethe.library.utils;

import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;

/**
 * 复制工具类
 *
 * @author Mlethe
 */
public class ClipboardUtil {

    /**
     * 复制
     *
     * @param context  上下文
     * @param sequence 复制内容
     * @param type     复制类型 1 文本，2 URL，3 Intent
     */
    private static boolean copy(Context context, CharSequence sequence, Intent intent, int type) {
        //获取剪贴板管理器：
        ClipboardManager cm = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
        ClipData mClipData = null;
        if (type == 1) {
            // 创建普通字符型ClipData
            mClipData = ClipData.newPlainText("Label", sequence);
        } else if (type == 2) {
            // url型
            mClipData = ClipData.newRawUri("Label", Uri.parse(sequence.toString()));
        } else if (type == 3) {
            // intent型
            mClipData = ClipData.newIntent("Label", intent);
        }
        if (mClipData != null) {
            // 将ClipData内容放到系统剪贴板里。
            cm.setPrimaryClip(mClipData);
            return true;
        }
        return false;
    }

    /**
     * 复制URL
     *
     * @param context 上下文
     * @param url     URL
     */
    public static boolean copyUrl(Context context, String url) {
        return copy(context, url, null, 2);
    }

    /**
     * 复制文本
     *
     * @param context  上下文
     * @param sequence 文本
     */
    public static boolean copy(Context context, CharSequence sequence) {
        return copy(context, sequence, null, 1);
    }

    /**
     * 复制Intent
     *
     * @param context 上下文
     * @param intent  intent
     */
    public static boolean copy(Context context, Intent intent) {
        return copy(context, null, intent, 3);
    }

    /**
     * 获取剪切板数据
     *
     * @param context 上下文
     * @return
     */
    public static ClipData getClipData(Context context) {
        //获取剪贴板管理器：
        ClipboardManager cm = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
        return cm.getPrimaryClip();
    }
}
